#!/usr/bin/env python3
"""
记忆管理功能演示

这个脚本展示了如何使用个人助理的记忆管理功能，
包括保存偏好、回忆信息、任务管理等。
"""

def demo_conversation_examples():
    """
    演示对话示例，展示记忆管理的各种使用场景
    """
    
    print("=== 个人助理记忆管理功能演示 ===\n")
    
    # 基础偏好保存示例
    print("🔹 基础偏好保存示例：")
    examples = [
        "请记住我住在北京",
        "我喜欢意大利菜",
        "我的工作时间是朝九晚五",
        "请记住我对花生过敏"
    ]
    
    for i, example in enumerate(examples, 1):
        print(f"  {i}. 用户: {example}")
        print(f"     助理: [使用 save_user_preference 工具保存信息]")
    
    print()
    
    # 高级分类偏好示例  
    print("🔹 高级分类偏好示例（使用 advanced_agent）：")
    advanced_examples = [
        ("保存用户偏好", "name", "张三", "personal"),
        ("保存用户偏好", "favorite_cuisine", "川菜", "food"),
        ("保存用户偏好", "work_location", "朝阳区", "work"),
        ("保存用户偏好", "exercise_time", "早上7点", "health")
    ]
    
    for i, (action, pref_name, pref_value, category) in enumerate(advanced_examples, 1):
        print(f"  {i}. 用户: 请{action}，我的{pref_name}是{pref_value}，分类为{category}")
        print(f"     助理: [调用 save_user_preference('{pref_name}', '{pref_value}', '{category}')]")
    
    print()
    
    # 信息回忆示例
    print("🔹 信息回忆示例：")
    recall_examples = [
        "我住在哪里？",
        "我喜欢什么菜系？",
        "我有什么过敏史吗？",
        "我的工作时间是什么？"
    ]
    
    for i, example in enumerate(recall_examples, 1):
        print(f"  {i}. 用户: {example}")
        print(f"     助理: [使用 recall_user_info 工具查询相关信息]")
    
    print()
    
    # 任务管理示例
    print("🔹 任务管理示例（高级版本）：")
    task_examples = [
        "提醒我明天下午3点开会",
        "添加高优先级任务：完成项目报告，截止日期2024-02-01",
        "查看我的所有任务",
        "查看待完成的任务",
        "将任务1标记为已完成"
    ]
    
    for i, example in enumerate(task_examples, 1):
        print(f"  {i}. 用户: {example}")
        if "提醒" in example or "添加" in example:
            print(f"     助理: [使用 add_task_reminder 工具]")
        elif "查看" in example:
            print(f"     助理: [使用 list_tasks 工具]")
        elif "标记" in example:
            print(f"     助理: [使用 update_task_status 工具]")
    
    print()
    
    # 个性化交互示例
    print("🔹 个性化交互示例：")
    personalized_examples = [
        "生成个性化问候",
        "我的个人偏好有哪些？",
        "我的工作相关设置有哪些？",
        "推荐附近的餐厅"
    ]
    
    for i, example in enumerate(personalized_examples, 1):
        print(f"  {i}. 用户: {example}")
        if "问候" in example:
            print(f"     助理: [使用 get_personalized_greeting 工具]")
        elif "偏好" in example or "设置" in example:
            print(f"     助理: [使用 list_preferences_by_category 工具]")
        elif "推荐" in example:
            print(f"     助理: [根据保存的 home_city 和 favorite_cuisine 提供个性化建议]")
    
    print()

def show_state_management_concept():
    """
    展示状态管理的概念和前缀使用
    """
    print("=== 状态管理概念解释 ===\n")
    
    print("📚 ADK 状态前缀说明：")
    print()
    
    state_prefixes = [
        ("(无前缀)", "当前会话专用", "current_task_step = 'booking_confirmation'"),
        ("user:", "用户跨会话数据", "user:home_city = '北京'"),
        ("app:", "应用全局设置", "app:default_language = 'zh-CN'"),
        ("temp:", "临时数据（不持久化）", "temp:api_response = '{...}'")
    ]
    
    for prefix, scope, example in state_prefixes:
        print(f"  🔸 {prefix:<12} | {scope:<15} | 示例: {example}")
    
    print()
    
    print("🔄 状态更新流程：")
    print("  1. 工具通过 tool_context.state['key'] = value 更新状态")
    print("  2. ADK 自动跟踪更改并生成 state_delta")
    print("  3. SessionService 负责持久化（如果使用 VertexAiSessionService）")
    print("  4. 下次会话时，相关状态会被恢复")
    
    print()

def show_memory_architecture():
    """
    展示记忆架构的层次
    """
    print("=== 记忆架构层次 ===\n")
    
    print("🧠 三层记忆架构：")
    print()
    
    memory_layers = [
        ("即时记忆", "session.state (无前缀)", "当前对话上下文", "对话进度、临时标志"),
        ("短期记忆", "session.state (user: 前缀)", "用户会话间数据", "用户偏好、个人信息"),
        ("长期记忆", "MemoryService", "跨会话知识库", "历史对话摘要、学习内容")
    ]
    
    for layer, storage, description, examples in memory_layers:
        print(f"  📊 {layer}")
        print(f"     存储位置: {storage}")
        print(f"     作用范围: {description}")
        print(f"     示例内容: {examples}")
        print()

def main():
    """
    主函数：运行完整的演示
    """
    demo_conversation_examples()
    show_state_management_concept()
    show_memory_architecture()
    
    print("=== 开始使用 ===\n")
    print("要实际运行这个个人助理：")
    print("1. 在 11agent_memory/ 目录创建 .env 文件")
    print("2. 添加你的 Google AI Studio API 密钥")
    print("3. 在父目录运行: adk web")
    print("4. 选择 'personal_assistant' 或 'advanced_personal_assistant'")
    print()
    print("🎯 试试这些对话：")
    print("  • '请记住我住在上海'")
    print("  • '我喜欢什么菜系？'")
    print("  • '提醒我明天开会'")
    print("  • '我的偏好设置有哪些？'")

if __name__ == "__main__":
    main() 